[C] Manipulação de vetores/ponteiros
Publicado por Enzo de Brito Ferber (última atualização em 15/09/2010)
[ Hits: 11.438 ]
Homepage: http://www.maximasonorizacao.com.br
Programa que mistura a manipulação de vetores e ponteiros para criar um vetor C baseado em outros 2 vetores A e B. O vetor C conterá todos os elementos de A mais os elementos não repetidos de B.
// vet.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ELEMENTS 5
#define COMB 10
#define TRUE 1
#define FALSE 0
int *geraVet( int a[], int b[] )
{
register int i, j;
int found;
// o maximo de elementos que o vetor pode ter é COMB ( a + b ),
// caso nenhum dos elementos sejam repetidos
int *c = (int *) malloc( COMB * sizeof( int ));
int *d;
// check de memoria
if ( !c ) return NULL;
/* PONTEIROS
* ---------
*
* O uso de ponteiros é melhor para não causar problemas
* no retorno da funçao, e também possibilitam uma manipulação
* melhor dos dados.
*
*/
// inicializa o vetor
for( i = 0; i < COMB; i++ )
c[ i ] = 0;
// copia dos elementos do primeiro vetor
for( i = 0; i < ELEMENTS; i++ )
c[ i ] = a[ i ];
// 'd' é usado como referencia para o proximo endereço vazio do ponteiro 'c'
d = c + ELEMENTS;
// copia com comparação de repetição
for( j = 0; j < ELEMENTS; j++ )
{
// variavel de controle
found = FALSE;
// loop de comparação
for( i = 0; i < ELEMENTS; i++ )
if ( b[j] == c[i] ) found = TRUE;
// se o elemento nao for repetido, a copia é feita.
if ( !found) *(d++) = b[j];
}
// retorno do endereço do ponteiro
return c;
}
int main( int argc, char *argv[] )
{
// vetores de teste
int a[] = { 1, 2, 3, 4, 5 };
int b[] = { 2, 3, 4, 5, 6 };
int c[] = { 5, 6, 7, 8, 9 };
int d[] = { 6, 7, 8, 9, 10 };
// retorno
int *ret;
// controladores de loop
register int i;
/* COMBINAÇÕES:
*
* A - B B - C
* A - C B - D
* A - D C - D
*/
// combinação
ret = geraVet( a, b );
// impressão do vetor
for( i = 0; i < COMB; i++ )
printf( "ret[ %2d ]: %2d\n", i, ret[ i ]);
// fim do programa
return 0;
}
Transforma a quantidade de dias digitados em anos, meses e dias
Transformação de Matriz em Matriz Transposta
funcsoma2.c - Soma 2 pontos flutuantes
Cálculo de média usando funções e struct
Nenhum comentário foi encontrado.
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (1)
Quando vocês pararam de testar distros? (6)
A fórmula da coca-cola foi decompilada e agora é opensource! (4)









